/* ************************************************************************
> File Name:     6.c
> Author:        zhfu
> mail:          3346897597@qq.com
> Created Time:  2022年05月04日 星期三 15时01分07秒
> Description:   
 ************************************************************************/
#include<stdlib.h>
#include"6.h"

static link make_node(unsigned char item)
{
    link p = malloc(sizeof *p);
    p->item = item;
    p->next = NULL;

    return p;
}

static void free_node(link p)
{
    free(p);
}

link init(unsigned char elements[], int n)
{
    if (!n){
        return NULL;
    }

    link p;
    p = make_node(elements[0]);
    p->next = init(elements + 1, n - 1);

    return p;
}

void pre_order(link t, void (*visit) (link))
{
    if (!t)
        return;
    visit(t);
    pre_order(t->next, visit);
}

void post_order(link t, void (*visit) (link))
{
    if (!t)
        return;
    post_order(t->next, visit);
    visit(t);
}
